home *** CD-ROM | disk | FTP | other *** search
- ; update the hour & minute hand display
- (defun hrmn ()
- (setq hour (* 100. (- time (fix time)))) ; get hour
- (setq minute (* 100. (- hour (fix hour)))) ; get minute
- (setq angle (- tp5pi (* mnfac minute)))
- (setq mnmid (polar center angle mnhl))
- (setq mnv2 (subst (cons '10 mnmid) (assoc '10 mnv2) mnv2))
- (setq mnend (polar center angle mnlen))
- (setq mnv3 (subst (cons '10 mnend) (assoc '10 mnv3) mnv3))
- (setq hour (if (> hour 13.) (- hour 12.) hour))
- (setq angle (- tp5pi (* hrfac hour)))
- (setq hrend (polar center angle hrlen))
- (setq hrmid (polar center angle hrhl))
- (setq hrv2 (subst (cons '10 hrmid) (assoc '10 hrv2) hrv2))
- (setq hrv3 (subst (cons '10 hrend) (assoc '10 hrv3) hrv3))
- (entmod mnv2)
- (entmod mnv3)
- (entmod hrv2)
- (entmod hrv3)
- (entupd hrhand)
- (entupd mnhand)
- (setq timer (strcat (itoa (fix hour)) ":" (itoa (fix minute)) ":"))
- )
- ; update the second hand display
- (defun sec ()
- (setq second (fix minute))
- (setq end3 (polar center (- tp5pi (* mnfac second)) sclen))
- (grdraw center start -1) ; erase old sec hand
- (setq start end3)
- (if (> old second) (hrmn)) ; new minute?
- (grdraw center end3 -1) ; draw new one
- (grtext -2 (strcat timer (itoa second))) ; update digital display
- (setq old second)
- )
- ; loop which runs the clock
- (defun go()
- (repeat 32000
- (setq time (getvar "CDATE")) ; get time & date
- (setq hour (* 10000. (- time (fix time)))) ; get hhmm.ss
- (setq minute (* 100. (- hour (fix hour)))) ; now ss.mil
- (if (/= (fix minute) (fix second)) (sec))
- )
- )
- (defun c:run()
- (command "regen")
- (grdraw center start -1)
- (setq old 60)
- (terpri)
- (prompt "CLOCK command via AutoLISP")
- (terpri)
- (go)
- )
- (defun rtd (a)
- (* (/ a twopi) 360.)
- )
- ; clear screen, draw face & setup factors
- (defun c:clock ()
- (expand 100)
- (setvar "HIGHLIGHT" 0)
- (setvar "BLIPMODE" 0)
- (setvar "GRIDMODE" 0)
- (setvar "FILLMODE" 1)
- (setq twopi (* 2. pi))
- (setq tp5pi (* 2.5 pi))
- (setq hrfac (/ (* 2. pi) 12.))
- (setq mnfac (/ (* 2. pi) 60.))
- (setq center (getvar "VIEWCTR"))
- (setq radius (* 0.45 (getvar "VIEWSIZE")))
- (setq hrwid (* 0.04 radius))
- (setq mnwid (* 0.02 radius))
- (setq old 60)
- (setq second 60)
- (setq start (list (car center) (+ (cadr center) (* 0.9 radius))))
- (command "ERASE" "W" (getvar "LIMMAX") (getvar "LIMMIN") "")
- (grclear)
- (command "CIRCLE" center radius)
- (command "TRACE" hrwid start (list (car center) (+ (cadr center) radius)) "")
- (command "ARRAY" start "" "Polar" center 12 360 "Yes")
- (setq sclen (* 0.8 radius))
- (setq mnlen (* 0.8 sclen))
- (setq mnhl (* 0.75 mnlen))
- (setq hrlen (* 0.8 mnlen))
- (setq hrhl (* 0.75 hrlen))
- (setq hrend (list (car center) (+ (cadr center) hrlen)))
- (setq hrmid (list (car center) (+ (cadr center) hrhl)))
- (setq mnend (list (+ (car center) mnlen) (cadr center)))
- (setq mnmid (list (+ (car center) mnhl) (cadr center)))
- (command "PLINE" center "WIDTH" 0. hrwid hrmid "WIDTH" hrwid 0. hrend "")
- (setq hrhand (entlast))
- (setq hrv2 (entget hrhand))
- (setq hrv2 (entget (entnext (entnext hrhand))))
- (setq hrv3 (entget (entnext (cdr (assoc '-1 hrv2)))))
- (command "PLINE" center "WIDTH" 0. mnwid mnmid "WIDTH" mnwid 0. mnend "")
- (setq mnhand (entlast))
- (setq mnv2 (entget mnhand))
- (setq mnv2 (entget (entnext (entnext mnhand))))
- (setq mnv3 (entget (entnext (cdr (assoc '-1 mnv2)))))
- (grdraw center start -1)
- (terpri)
- (prompt "CLOCK command via AutoLISP")
- (terpri)
- (go)
- )